home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-06-22 | 1.4 KB | 94 lines | [TEXT/BROW] |
- // ObjectQueue.h
- // Created by Bill Hubauer on Wed, May 24, 1995 @ 7:23 AM.
-
- #ifndef __ObjectQueue__
- #define __ObjectQueue__
-
-
-
- class CQIterator;
-
-
- class MQueueElem
- {
- friend class CObjectQueue;
- public:
- MQueueElem();
- virtual ~MQueueElem() {}
-
- MQueueElem* Next();
-
- protected:
-
- struct Elem {
- QElemPtr qLink;
- short qType;
- MQueueElem* qObject;
- };
-
- Elem _elem;
-
- };
-
-
- class CObjectQueue
- {
- friend class CQIterator;
- public:
- CObjectQueue();
- virtual ~CObjectQueue();
-
- UInt32 GetNumElems() {return _numElems;}
- void Enqueue(MQueueElem* elem);
- void Dequeue(MQueueElem* elem);
-
- void DequeueAll();
-
- MQueueElem* FirstElem();
- MQueueElem* Tail();
-
- protected:
-
- UInt32 _numElems;
-
- CQIterator* FirstIter() {return (CQIterator*)((MQueueElem::Elem*)_iters.qHead)->qObject;}
- void RemoveIterator(CQIterator* iter);
- void AddIterator(CQIterator* iter);
-
- QHdr _queue;
- QHdr _iters;
- };
-
-
-
-
- class CQIterator : public MQueueElem
- {
- friend class CObjectQueue;
-
- public:
- CQIterator();
- CQIterator(CObjectQueue& queue);
- virtual ~CQIterator();
-
- void SetQueue(CObjectQueue* queue);
-
- Boolean MoreQ() {return _curElem != NULL;}
- MQueueElem* GetNext();
-
- protected:
- void ElemQueued(MQueueElem* elem);
- void ElemDequeued(MQueueElem* elem);
- void QueueEmpty();
- void QueueDestroyed();
- protected:
- void Init();
-
- CObjectQueue* _queue;
- MQueueElem* _curElem;
- };
-
-
-
- #endif
-